import request from '@/utils/request'

/**
 * 获取角色列表
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getRoleList(params) {
  return request({
    url: '/system/role/list',
    method: 'get',
    params
  })
}

/**
 * 获取角色详情
 * @param {number} id 角色ID
 * @returns {Promise}
 */
export function getRoleDetail(id) {
  return request({
    url: `/system/role/${id}`,
    method: 'get'
  })
}

/**
 * 创建角色
 * @param {Object} data 角色数据
 * @returns {Promise}
 */
export function createRole(data) {
  return request({
    url: '/system/role',
    method: 'post',
    data
  })
}

/**
 * 更新角色
 * @param {number} id 角色ID
 * @param {Object} data 角色数据
 * @returns {Promise}
 */
export function updateRole(id, data) {
  return request({
    url: `/system/role/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除角色
 * @param {number} id 角色ID
 * @returns {Promise}
 */
export function deleteRole(id) {
  return request({
    url: `/system/role/${id}`,
    method: 'delete'
  })
}

/**
 * 更新角色状态
 * @param {number} id 角色ID
 * @param {number} status 状态值(1:正常;0:停用)
 * @returns {Promise}
 */
export function updateRoleStatus(id, status) {
  return request({
    url: `/system/role/${id}/status`,
    method: 'patch',
    data: { status }
  })
}

/**
 * 获取角色已分配的权限菜单IDs
 * @param {number} id 角色ID
 * @returns {Promise}
 */
export function getRolePermissions(id) {
  return request({
    url: `/system/role/${id}/menus`,
    method: 'get'
  })
}

/**
 * 分配角色权限
 * @param {number} id 角色ID
 * @param {Array} menuIds 菜单ID数组
 * @returns {Promise}
 */
export function assignRolePermissions(id, menuIds) {
  return request({
    url: `/system/role/${id}/menus`,
    method: 'put',
    data: { menuIds }
  })
}

/**
 * 获取所有角色
 * @returns {Promise}
 */
export function getAllRoles() {
  return request({
    url: '/system/role/all',
    method: 'get'
  })
}

/**
 * 获取角色已分配的用户列表
 * @param {number} roleId 角色ID
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getRoleUsers(roleId, params) {
  return request({
    url: `/system/role/${roleId}/user`,
    method: 'get',
    params
  })
}

/**
 * 获取所有角色选项
 * @returns {Promise}
 */
export function getAllRoleOptions() {
  return request({
    url: '/system/role/options',
    method: 'get'
  })
}

/**
 * 获取角色选择器数据
 * @returns {Promise} 返回角色列表数据
 */
export function getRoleSelect() {
  return request({
    url: '/api/role/select',
    method: 'get'
  })
} 